//c++类型转换 const_cast（const属性：处理后面两种情况）  处理const型引用、处理常目标指针
#include <iostream>
using namespace std;

//const型引用
// int main()
// {
//     int i = 6;//普通整型变量
//     const int &ri = i;//const型引用，不可修改

//     //以下语句错误
//     //ri = 8; //错误

//     //正确的：去除const特性后，可以赋值
//     const_cast<int &>(ri) = 8; //没有修改其特性，只是临时去除，以后不能当成变量使用
//     cout << i << endl;

//     return 0;
// }


//常目标指针
int main()
{
    int i = 6;
    const int *p = &i;

    //错误：试图修改常指针的目标  *p = 8;

    //正确：去除const特性后，可以修改其目标
    *(const_cast<int *>(p)) = 8;
    cout << *p << endl;

    //错误：试图扩大权限，错误！  int *k = p;

    //正确：去除const特性后，可以赋值给普通指针k
    int *k = const_cast<int *>(p);
    cout << *k << endl;

    return 0;
}